#!/usr/bin/python
# -*- coding: utf-8 -*-

"""
  RPC
"""

import logging
from engine import settings
from engine.data import news
from engine.data import cites
from engine.data import pages
from google.appengine.ext import webapp
from google.appengine.ext.webapp.util import run_wsgi_app

# enable info logging by the app
logging.getLogger().setLevel(logging.INFO)

class RPCHandler(webapp.RequestHandler):
  """Класс страницы удаленного вызова процедур
  """

  def get(self, category):
    """Забираем по методу GET страницу
    Args:
      self: класс страницы
      category: раздел
    """
    result = 'invalid category'
    self.response.out.write(result)

  def post(self, category):
    """Забираем по методу POST страницу
    Args:
      self: класс страницы
      category: раздел
    """

    result = 'invalid category'                                     # результат по-умолчанию
    if self.request.get('RPCCODE') == settings.RPCODE:              # проверяем код RPC
      if category == 'pages/add':                                     # добавляем страницу
        page = {'url' : self.request.get('pageURL'), 
                'title' : self.request.get('pageTitle'), 
                'description' : self.request.get('pageDescription'), 
                'content' : self.request.get('pageContent')}
        result = pages.AddPage(page)
        
      elif category == 'pages/get':                                   # получаем страницу
        url = self.request.get('url')
        page = pages.GetPages(url)
        result = page.URL + ':item_end:' + page.Title + ':item_end:' + page.Description + ':item_end:' + page.Content + ':item_end:'

      elif category == 'news/add':                                    # добавляем новости
        result = news.AddNews(self.request.get('news'))

      elif category == 'cites/add':                                   # добавляем цитаты
        result = cites.AddCite(self.request.get('citeText'), self.request.get('citeAuthor'))
    else:
      result = 'Wrong RPC code!'

    self.response.out.write(result)                                 # выводим результат